import type { AccountModel } from './models';

import { requestClient } from '#/api/request';

/**
 * 分页获取账号集合
 * @param params 分页查询参数
 * @returns 返回查询结果
 */
export async function getAccountPagedListApi(params: PageParams) {
  return requestClient.get<PaginationResult<AccountModel>>(
    '/account/list-page',
    {
      params,
    },
  );
}

/**
 * 创建账号
 * @param data 要创建的账号
 * @returns 返回结果
 */
export async function createAccountApi(data: AccountModel) {
  return requestClient.post<boolean>('/account', data);
}

/**
 * 更新账号
 * @param data 要更新的账号
 * @returns 返回结果
 */
export async function updateAccountApi(data: AccountModel) {
  return requestClient.put<boolean>('/account', data);
}

/**
 * 设置账号状态
 * @param userId 账号 Id
 * @param newPassword 新密码
 * @returns 返回结果
 */
export async function resetPasswordApi(userId: number, newPassword: string) {
  return requestClient.put<boolean>('/account/reset-password', {
    userId,
    newPassword,
  });
}

/**
 * 设置账号状态
 * @param userId 账号 Id
 * @param isDisabled 是否停用
 * @returns 返回结果
 */
export async function setAccountStatusApi(userId: number, isDisabled: boolean) {
  return requestClient.put<boolean>('/account/change-status', {
    userId,
    isDisabled,
  });
}

/**
 * 给用户分配角色
 * @param userId 账号 Id
 * @param roleIds 角色 Id 集合
 * @returns 返回结果
 */
export async function grantRolesApi(userId: number, roleIds: number[]) {
  return requestClient.post<boolean>(`/account/grant-roles`, {
    userId,
    roleIds,
  });
}

/**
 * 删除账号
 * @param id 账号 Id
 * @returns 返回结果
 */
export async function deleteAccountApi(id: number) {
  return requestClient.delete<boolean>(`/account/${id}`);
}
